// axios的三层封装：第一层 => 对axios进行增强
import axios from "axios";
//引入全局的Message(Element UI)
import { Message } from "element-ui";
// 引入本地存储数据
import local from "@/utils/local.js";
// 引入router
import router from '@/router/index.js';

// 1.设置公共服务器路径
axios.defaults.baseURL = 'http://sell.h5.itsource.cn:8087';

// 2.添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 发请求时，自动携带token
    let token = local.get("token");
    if (token) {
        config.headers.Authorization = 'Bearer ' + token;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 3.添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数  // 访问成功时执行
    // 判断是否获取数据成功
    if (typeof (response.data.code) === "number") {  //如果response.data.code是数字就弹提示框，如果不是就不弹
        if (response.data.code === 0 || response.data.code === 200) {
            Message.success(response.data.msg);
        } else {
            Message.error(response.data.msg);
        }
    }
    return response;
}, function (error) {
    //判断如果是401，就报错，并跳转
    if (error.response.status === 401) {
        Message.error("由于你强制访问页面已经涉及到当前网站的隐私，你的IP地址已暴露，我们已报警处理");
        router.push("/login");  //从引入的路由模块中调用跳转方法
    }
    // 超出 2xx 范围的状态码都会触发该函数  // 访问失败时执行
    return Promise.reject(error);
});

// 暴露增强后的axios
export default axios;